package com.russell.pms.dao.hibernate;

import java.util.List;

import com.russell.pms.dao.VendorDao;
import com.russell.pms.model.Vendor;

/**
 * 
 * @author <a href="mailto:fvinluan@gmail.com">Francis Vinluan</a>
 * 
 * @version $Revision: 1.0 $
 */
public class VendorDaoHibernate extends BaseDaoHibernate implements VendorDao {

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.princess.etrak.dao.VendorDao#getVendor(java.lang.Short)
	 */
	/**
	 * Method getVendor.
	 * 
	 * @param id
	 *            Long
	 * 
	 * @return Vendor * @see com.princess.etrak.dao.VendorDao#getVendor(Long) * @see
	 *         com.princess.etrak.dao.VendorDao#getVendor(String) * @see
	 *         com.princess.etrak.dao.VendorDao#getVendor(String)
	 */
	public Vendor getVendor(int id) {
		if (logger.isDebugEnabled()) {
			logger.debug("getting vendor begins" + id);
		}
		Vendor vendor = (Vendor) getCurrentSession().get(Vendor.class, id);
		if (logger.isDebugEnabled()) {
			logger.debug("getting vendor ends ");
		}
		return vendor;
	}

	/**
	 * Gets a list of all vendor.
	 * 
	 * 
	 * @return List populated list of vendor * @see
	 *         com.princess.etrak.dao.VendorDao#getVendorList() * @see
	 *         com.princess.etrak.dao.VendorDao#getVendorList() * @see
	 *         com.princess.etrak.dao.VendorDao#getVendorList() * @see
	 *         com.princess.etrak.dao.VendorDao#getVendorList()
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<Vendor> getVendors() {
		if (logger.isDebugEnabled()) {
			logger.debug("getting all vendor begins");
		}
		List<Vendor> cList = getCurrentSession().createQuery("FROM Vendor")
				.list();
		if (cList == null || cList.size() < 1)
			return null;
		if (logger.isDebugEnabled()) {
			logger.debug("getting all vendor ends: ");
		}
		return cList;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.princess.etrak.dao.VendorDao#removeVendor(com.princess.ilo
	 * .model.Vendor)
	 */
	/**
	 * Method removeVendor.
	 * 
	 * @param vendor
	 *            Vendor
	 * 
	 * @see com.princess.etrak.dao.VendorDao#removeVendor(Vendor)
	 */
	public void removeVendor(Vendor vendor) {
		if (logger.isDebugEnabled()) {
			logger.debug("removeVendor begins");
		}
		getCurrentSession().delete(vendor);
		if (logger.isDebugEnabled()) {
			logger.debug("removeVendor ends");
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.princess.etrak.dao.VendorDao#saveVendor(com.princess.etrak.
	 * model.Vendor)
	 */
	/**
	 * Method saveVendor.
	 * 
	 * @param vendor
	 *            Vendor
	 * 
	 * @see com.princess.etrak.dao.VendorDao#saveVendor(Vendor)
	 */
	public void saveVendor(Vendor vendor) {
		if (logger.isDebugEnabled()) {
			logger.debug("saveVendor begins: " + vendor);
		}
		getCurrentSession().save(vendor);
		if (logger.isDebugEnabled()) {
			logger.debug("saveVendor ends");
		}
	}

	/**
	 * Method updateVendor.
	 * 
	 * @param vendor
	 *            Vendor
	 * 
	 * @see com.princess.etrak.dao.VendorDao#updateVendor(Vendor)
	 */
	@Override
	public void updateVendor(Vendor vendor) {
		if (logger.isDebugEnabled()) {
			logger.debug("updateVendor begins: " + vendor);
		}
		getCurrentSession().update(vendor);
		if (logger.isDebugEnabled()) {
			logger.debug("updateVendor ends");
		}
	}

}
